package ar.edu.unq.model;

/**
 * Representa una estrategia de formacion concreta. La formacion tiene 1 arquero 2 Defensores Centrales 2 Laterales 1
 * Volante Defensivo 2 Volantes Laterales 1 Enganche 1 Media Punta 1 Delantero
 * 
 * @author Nicolas Faure
 */
public class FormacionStrategyImpl extends FormacionStrategy {

    public FormacionStrategyImpl() {
        super();
    }

    @Override
    protected void crearListaPosiciones() {
        this.addArquero();
        this.addCentrales(2);
        this.addLaterales(2);
        this.addVolantesDefensivos(1);
        this.addVolantesLaterales(2);
        this.addEnganches(1);
        this.addMediaPuntas(1);
        this.addDelanteros(1);
    }

    /**
     * Se encarga de obtener el mejor jugador para una posicion.
     * 
     * @author Nicolas Faure
     */
    @Override
    protected Jugador getMejor(final Posicion posicion, final Equipo equipo, final Formacion formacion) {

        // Asumo que el mejor jugador para la posición es el pŕimero de la lista
        Jugador mejorJugador = equipo.getJugadores().get(0);

        // Itero sobre los jugadores preguntando por su habilidad para posicion
        for (Jugador jugador : equipo.getJugadores()) {
            int habilidad = jugador.getValorHabilidad(posicion);
            // Pregunto tambien que no sea titular
            if (habilidad > mejorJugador.getValorHabilidad(posicion) && !formacion.esTitular(jugador)) {
                mejorJugador = jugador;
            }
        }
        return mejorJugador;

    }

}
